'''
#创建一个可迭代对象
list=[1,2,3]
#用一个变量接收list这个可迭代对象使用__iter__()方法返回的一个迭代器
list1=list.__iter__()
print(list1)
#用这个迭代器的__next__()方法访问列表中的元素
try:
    while True:
        print(list1.__next__())
except StopIteration:
    print('已经遍历完')'''

'''
# 创建一个字典可迭代对象
my_dict = {'shuming': 'zhanshen', 3: 59, 'renshu': 123456}
my_dict1=my_dict.values()
dict_values=my_dict1.__iter__()
# 使用 可迭代对象的__iter__() 方法获取字典返回的迭代器
dict_iter = my_dict.__iter__()
print(dict_iter)


# 使用迭代器的 __next__() 方法来遍历字典
try:
    while True:
# 获取下一个元素,字典默认迭代的是“键”，需要先得到字典的值生成迭代对象后返回一个迭代器再进行next操作
        item = dict_iter.__next__()
        valudes=dict_values.__next__()
        print(f"{item}:{valudes}")
except StopIteration:
# 当没有更多元素时，迭代器会抛出 StopIteration 异常
    print('已经遍历完')'''


'''#自定义迭代器,自定义一个 “范围偶数迭代器”
#定义一个叫My_test的类

class My_test:
    def __init__(self, start, end):
        self.a=start
        self.b=end
#实现__iter__()方法，返回一个迭代器
    def __iter__(self):
        return self
    def __next__(self):
        if self.a%2!=0:
            self.a+=1
        while self.a<self.b:
            values=self.a
            self.a+=2
            return values

test=My_test(1, 10)
print(test.__next__())
print(test.__next__())
print(test.__next__())
print(test.__next__())
'''
#生成器函数
def make_num():
    start = 1
    while True:
        yield start
        start += 1
num_gen = make_num()
for i in num_gen:
    print(i)


